package com.csi.mapper;

import com.csi.domain.Power;
import com.csi.domain.Role;
import com.csi.domain.RolePower;
import org.apache.ibatis.annotations.Param;


import java.util.List;

public interface RoleMapper {


    /**
     * 新增角色
     * @return
     */
    int save(Role role);

    /**
     * 查找角色
     * @return List<Role> 角色集合
     */
     List<Role> findRole(long hotelId);

    /**
     * 通过角色id查找角色权限
     * @return List<Power>
     */
     List<Power>  findPowerById(long roleId);

    /**
     * 查找所有角色权限
     * @return List<Power>
     */
    List<Power>  findAllPower();

    /**
     * 通过角色id删除角色权限
     * @param roleId 角色id
     * @return 条数
     */
     int deleteRolePowerById(long roleId);



    /**
     * 添加用户权限
     * @param rolePowerList 权限集合
     * @return 条数
     */
     int saveRolePower(@Param("rolePowerList") List<RolePower> rolePowerList);

    /**
     * 更新角色对想法
     * @param role 角色
     * @return 执行条数
     */
    int updateRoleInfo(Role role);

    /**
     * 根据角色名和酒店id查找角色
     * @param roleName
     * @param hotelId
     * @return
     */
    Role findByName(@Param("roleName") String roleName, @Param("hotelId") long hotelId);

    /**
     * 根据角色id删除角色
     * @param roleId 角色id
     * @return
     */
    int deleteRole(long roleId);


    /**
     * 根据角色id查找角色
     * @param roleId 角色id
     * @return
     */
    Role findRoleById(long roleId);

    /**
     * 是否为初始管理员
     * @param roleId
     * @return
     */
    boolean isInitialAdmin(@Param("roleId") long roleId,@Param("hotelId") long hotelId);


    int saveRolePowers(@Param("roleId") long id, @Param("powerList") List<Long> powerList);
}
